home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 34.zip
/
BS1 part 34
/
GFA basic training.adf
/
Requester
/
AUSWAHLBOX.LST
< prev
next >
Wrap
File List
|
1989-06-01
|
5KB
|
214 lines
@aufruf
PROCEDURE aufruf
DIM wahl$(40)
DATA Eins,Zwei,Drei
DATA Vier,Fünf,Sechs,Sieben,Acht,Neun,Zehn
DATA Elf,Zwölf,Dreizehn,Vierzehn,Fünfzehn,Sechzehn,Siebzehn,Achtzehn,Neunzehn,Zwanzig
DATA Einundzwanzig,Zweiundzwanzig,Dreiundzwanzig,Vierundzwanzig,Fünfundzwanzig,Sechsundzwanzig,Siebenundzwanzig,Achtundzwanzig,Neunundzwanzig,Dreißig
DATA Einunddreißig,Zweiunddreißig,Dreiunddreißig,Vierunddreißig,Fünfunddreißig,Sechsunddreißig,Siebenunddreißig,Achtunddreißig,Neununddreißig,Vierzig
FOR i=1 TO 40
READ wahl$(i)
NEXT i
@auswahl_box(250,33,40,"Bitte wählen Sie",wahl$(),a!())
FOR i=1 TO 40
IF a!(i)=FALSE
PRINT wahl$(i)
ENDIF
NEXT i
REPEAT
UNTIL MOUSEK=1 OR INKEY$=CHR$(13)
RETURN
'
PROCEDURE auswahl_box(x&,y|,n|,u$,VAR wahl$(),a!())
LOCAL hintergrund$,teil$,taste$,ok!,revers!,markiert!,ende!,m$
LOCAL b&,p&,l&,re&,taste&,ma|,i|,l|,erster|,l1|,l2|
LOCAL l3|,l4|,eintrag|,nummer|,revers|,richtung|
'
DIM a!(n|)
ARRAYFILL a!(),TRUE
ok!=FALSE
revers!=FALSE
markiert!=TRUE
DEFFILL 1
'
ma|=LEN(u$)
FOR i|=1 TO n|
ma|=MAX(ma|,LEN(wahl$(i|)))
NEXT i|
'
IF n|>10
l|=120
ELSE
l|=(n|*12)
ENDIF
'
b&=SUCC(INT(MAX((ma|*8)+30,156)/10))*10
GET x&,y|,x&+b&+1,y|+l|+37,hintergrund$
COLOR 0
PBOX x&,y|,x&+b&,y|+l|+36
COLOR 1
INC x&
INC y|
BOX x&,y|,x&+b&,y|+12
mittig|=LEN(u$)*4
TEXT x&+b&/2-mittig|,y|+9,u$
BOX x&,y|+12,x&+b&,y|+23
BOX x&,y|+23,x&+b&,y|+23+l|
BOX x&,y|+23+l|,x&+b&,y|+34+l|
IF n|>10
i|=y|+l|+28
LINE x&+2,i|,x&+6,i|+4
LINE x&+6,i|+4,x&+10,i|
LINE x&+3,i|-4,x&+3,i|
LINE x&+3,i|-4,x&+9,i|-4
LINE x&+9,i|-4,x&+9,i|
'
LINE x&+2,y|+18,x&+6,y|+14
LINE x&+6,y|+14,x&+10,y|+18
LINE x&+3,y|+17,x&+3,y|+21
LINE x&+3,y|+21,x&+9,y|+21
LINE x&+9,y|+21,x&+9,y|+17
GET x&+2,y|+14,x&+10,i|+4,m$
FOR p&=x&+11 TO x&+b& STEP 10
PUT SUCC(p&),ADD(y|,14),m$
NEXT p&
ELSE
DEFFILL ,3
FILL x&+3,y|+15
FILL x&+3,y|+25+l|
ENDIF
'
LINE x&+15,y|+23,x&+15,y|+23+l|
FOR i|=0 TO MIN(PRED(n|),9)
TEXT x&+3,y|+31+i|*12,i|
NEXT i|
'
DEC x&
DEC y|
BOX x&,y|,x&+b&,y|+l|+36
FOR l&=y|+23 TO y|+23+l| STEP 12
LINE x&,l&,x&+b&,l&
NEXT l&
FOR i|=1 TO MIN(n|,10)
TEXT x&+b&/2-(LEN(wahl$(i|))*8)/2,y|+20+i|*12,wahl$(i|)
NEXT i|
'
erster|=1
re&=x&+b&
l1|=y|+12
l2|=l1|+11
l3|=l2|+l|
l4|=l3|+11
@a_box
PUT x&,y|,hintergrund$
hintergrund$=""
RETURN
PROCEDURE a_box
REPEAT
@taste
'
IF MOUSEX>x& AND MOUSEX<re& AND MOUSEY>l2| AND MOUSEY<l3| AND MOUSEK<>2
' Mauszeiger im Auswahlfeld
eintrag|=MAX(0,(MOUSEY-y|-24)/12)
@revers(eintrag|)
@haken
ELSE
@revers(10)
ENDIF
'
IF MOUSEX>x& AND MOUSEX<re& AND MOUSEY>l1| AND MOUSEY<l2| AND MOUSEK=1 AND erster|<n|-9
' Mauszeiger im oberen Scrollfeld
@scroll(1)
ELSE IF MOUSEX>x& AND MOUSEX<re& AND MOUSEY>l3| AND MOUSEY<l4| AND MOUSEK=1 AND erster|>1
' Mauszeiger im unteren Scrollfeld
@scroll(0)
ENDIF
UNTIL MOUSEK=2 OR ende!=TRUE
RETURN
PROCEDURE revers(nummer|)
IF revers!=TRUE AND revers|<>nummer| !Revers off
GET x&+19,y|+25+revers|*12,x&+b&-3,y|+33+revers|*12,revers$
PUT x&+19,y|+25+revers|*12,revers$,30
revers!=FALSE
ELSE IF revers!=FALSE AND nummer|<10 !Revers on
GET x&+19,y|+25+nummer|*12,x&+b&-3,y|+33+nummer|*12,revers$
PUT x&+19,y|+25+nummer|*12,revers$,30
revers!=TRUE
revers|=nummer|
ENDIF
RETURN
PROCEDURE scroll(richtung|)
IF richtung|
INC erster|
ELSE
DEC erster|
ENDIF
GET x&+17,y|+25+richtung|*12,x&+b&-1,y|+10+l|+richtung|*12,teil$
PUT x&+17,y|+37-richtung|*12,teil$
DEFFILL 0
PBOX x&+18,y|+25+richtung|*108,x&+b&-1,y|+34+richtung|*108
DEFFILL 1
TEXT x&+5+b&/2-(LEN(wahl$(erster|+richtung|*9))*8)/2,y|+32+richtung|*108,wahl$(erster|+richtung|*9)
IF a!(erster|+richtung|*9)=FALSE
COLOR 1
LINE x&+b&-10,y|+30+richtung|*108,x&+b&-7,y|+33+richtung|*108
LINE x&+b&-7,y|+33+richtung|*108,x&+b&-3,y|+25+richtung|*108
ENDIF
RETURN
PROCEDURE taste
taste$=INKEY$
IF taste$<>""
IF LEN(taste$)=1
taste&=ASC(taste$)
ELSE
taste&=ASC(RIGHT$(taste$))
ENDIF
SELECT taste&
CASE 65
IF erster|<n|-9
@revers(10)
@scroll(1)
ENDIF
CASE 66
IF erster|>1
@revers(10)
@scroll(0)
ENDIF
CASE 48 TO 57
SUB taste&,48
IF taste&<n|
IF a!(erster|+taste&)=TRUE
a!(erster|+taste&)=FALSE
COLOR 1
LINE x&+b&-10,y|+30+taste&*12,x&+b&-7,y|+33+taste&*12
LINE x&+b&-7,y|+33+taste&*12,x&+b&-3,y|+25+taste&*12
ELSE
a!(erster|+taste&)=TRUE
COLOR 0
LINE x&+b&-10,y|+30+taste&*12,x&+b&-7,y|+33+taste&*12
LINE x&+b&-7,y|+33+taste&*12,x&+b&-3,y|+25+taste&*12
ENDIF
ENDIF
CASE 13
ende!=TRUE
ENDSELECT
taste$=""
ENDIF
RETURN
PROCEDURE haken
IF MOUSEK=1 AND ok!=FALSE
IF a!(erster|+eintrag|)=TRUE
a!(erster|+eintrag|)=FALSE
COLOR 1
LINE x&+b&-10,y|+30+eintrag|*12,x&+b&-7,y|+33+eintrag|*12
LINE x&+b&-7,y|+33+eintrag|*12,x&+b&-3,y|+25+eintrag|*12
ELSE
a!(erster|+eintrag|)=TRUE
COLOR 3
LINE x&+b&-10,y|+30+eintrag|*12,x&+b&-7,y|+33+eintrag|*12
LINE x&+b&-7,y|+33+eintrag|*12,x&+b&-3,y|+25+eintrag|*12
ENDIF
ENDIF
ok!=MOUSEK
RETURN